package gonat

type Mapping struct {
	/// <summary>
	/// Gets the mapping's description. It is the value stored in the NewPortMappingDescription parameter.
	/// The NewPortMappingDescription parameter is a human readable string that describes the connection.
	/// It is used in sorme web interfaces of routers so the user can see which program is using what port.
	/// </summary>
	Description string
	/// <summary>
	/// Gets the private ip.
	/// </summary>
	PrivateIP string
	/// <summary>
	/// Gets the protocol.
	/// </summary>
	Protocol int
	/// <summary>
	/// The PrivatePort parameter specifies the port on a client machine to which all traffic
	/// coming in on <see cref="#PublicPort">PublicPort</see> for the protocol specified by
	/// <see cref="#Protocol">Protocol</see> should be forwarded to.
	/// </summary>
	/// <see cref="Protocol">Protocol enum</see>
	PrivatePort int
	/// <summary>
	/// Gets the public ip.
	/// </summary>
	PublicIP string
	/// <summary>
	/// Gets the external (visible) port number.
	/// It is the value stored in the NewExternalPort parameter .
	/// The NewExternalPort parameter is used to specify the TCP or UDP port on the WAN side of the router which should be forwarded.
	/// </summary>
	PublicPort int
	/// <summary>
	/// Gets the lifetime. The Lifetime parameter tells the router how long the portmapping should be active.
	/// Since most programs don't know this in advance, it is often set to 0, which means 'unlimited' or 'permanent'.
	/// </summary>
	/// <remarks>
	/// All portmappings are release automatically as part of the shutdown process when <see cref="NatDiscoverer">NatUtility</see>.<see cref="NatUtility#releaseonshutdown">ReleaseOnShutdown</see> is true.
	/// Permanent portmappings will not be released if the process ends anormally.
	/// Since most programs don't know the lifetime in advance, Open.NAT renew all the portmappings (except the permanents) before they expires. So, developers have to close explicitly those portmappings
	/// they don't want to remain open for the session.
	/// </remarks>
	Lifetime int
}
